home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
051-060
/
amok52
/
oberonced
/
obcedcall.mod
< prev
next >
Wrap
Text File
|
1993-11-04
|
2KB
|
80 lines
(******************************************************************************
:Program. ObCEDCall.mod
:Contents. Communication with CED
:Author. Achim Siebert
:Address. Nobileweg 67 , 7000 Stuttgart 40
:Copyright. Public Domain
:Language. Oberon
:Translator. AmigaOberon A+L
:Imports. CED
:History. Dec-1990; V1.2
:Usage. ObCEDCall [c][l][e][opt] | [next] | [prev] | [first] | [quit]
*******************************************************************************)
MODULE ObCEDCall;
IMPORT
ExecSupport,
Arguments,
Strings,
SYSTEM,
Dos,
CED,
Exec;
VAR
msp, replmsp : Exec.MsgPortPtr;
msgstring : ARRAY 8 OF CHAR;
msgstringPtr : POINTER TO ARRAY 8 OF CHAR;
mymess : CED.CEDMsg;
CONST myportname = "OB_CED";
PROCEDURE GetArgs():BOOLEAN;
VAR i: INTEGER;
BEGIN
i := Arguments.NumArgs();
IF i = 1 THEN
Arguments.GetArg(1,msgstring);
Strings.Upper(msgstring);
RETURN TRUE;
END;
RETURN FALSE;
END GetArgs;
BEGIN
msp := Exec.FindPort(myportname);
LOOP
IF msp#NIL THEN
replmsp := ExecSupport.CreatePort("",0);
IF replmsp = NIL THEN HALT(20) END;
mymess.cmNode.node.type:=Exec.message;
mymess.cmNode.length:=CED.CEDMsgSize;
mymess.cmNode.replyPort:=replmsp;
IF NOT GetArgs() THEN EXIT;END;
NEW(msgstringPtr);
IF msgstringPtr = NIL THEN HALT(20) END;
mymess.args[0] := msgstringPtr;
COPY(msgstring,msgstringPtr^);
Exec.PutMsg(msp,SYSTEM.ADR(mymess));
Exec.WaitPort(replmsp);
ExecSupport.DeletePort(replmsp);
EXIT;
ELSE IF Dos.Execute("Run >NIL: ObCED",NIL,NIL) THEN
Dos.Delay(100);
msp := Exec.FindPort(myportname);
IF msp = NIL THEN EXIT END;
ELSE EXIT;
END;
END;
END;
END ObCEDCall.